package org.mspring.mlog.search;

import java.util.List;
import java.util.Map;

import org.apache.lucene.document.Document;

/**
 * 
 * @author Gao Youbo
 * @since 2013年7月31日
 */
public interface Searchable {
    // public String FN_TITLE = "title";
    // public String FN_DETAIL = "detail";

    /**
     * 文档的唯一编号
     * 
     * @return 文档id
     */
    public Long documentId();

    public void documentId(Long id);

    /**
     * 要存储的字段
     * 
     * @return 返回字段名列表
     */
    public List<String> storeFields();

    /**
     * 要进行分词索引的字段
     * 
     * @return 返回字段名列表
     */
    public List<String> indexFields();

    /**
     * 文档的优先级
     * 
     * @return
     */
    public float boost();

    /**
     * 扩展的存储数据
     * 
     * @return 扩展数据K/V
     */
    public Map<String, String> extendStoreDatas();

    /**
     * 扩展的索引数据
     * 
     * @return 扩展数据K/V
     */
    public Map<String, String> extendIndexDatas();

    /**
     * Document转换成Object
     * 
     * @param doc
     * @return
     */
    public Searchable document2Object(Document doc);

}
